﻿namespace ufida.u9.ait.openapi
{
	using System;
	using System.Collections.Generic;
    using System.Text;
    using ufida.u9.ait.openapi.utils;
    using UFIDA.U9.Base;
    using UFIDA.U9.Base.UserRole;
    using UFIDA.U9.PM.PM_Util;
    using UFSoft.UBF.AopFrame;
    using UFSoft.UBF.Util.Context;
    using UFSoft.UBF.Util.Data;

    /// <summary>
    /// AutoLoginURLGet partial 
    /// </summary>	
	public partial class AutoLoginURLGet 
	{	
		internal BaseStrategy Select()
		{
			return new AutoLoginURLGetImpementStrategy();	
		}		
	}

    #region  implement strategy	
    /// <summary>
    /// D:\work\培训资料\U9开发培训资料\其他资料\U9单点登录.doc
    /// 登录地址示例
    /// http://localhost:90/u9c/api/v1/autologin.aspx?user_code=cl&user_password=31ABBFF5FCCD95449FA9FCDF33B1610F&enterprise_id=01&organization_id=1002109230000058&e=m
    /// http://localhost:90/U9C/sign/U9Entrance.aspx?u=cl&p=31ABBFF5FCCD95449FA9FCDF33B1610F&ep=01&org=1002109230000058&e=m
    /// 下述代码采用 U9Entrance.aspx
    /// 参数说明:
    /// u=用户编码
    /// p=用户密码
    /// ep=企业编码
    /// org=组织编码
    /// e=m 使用加密后的用户密码
	/// </summary>	
	internal partial class AutoLoginURLGetImpementStrategy : BaseStrategy
	{
		public AutoLoginURLGetImpementStrategy() { }

		public override object Do(object obj)
		{						
			AutoLoginURLGet bpObj = (AutoLoginURLGet)obj;
            try
            {
                if (bpObj.Data == null)
                    throw new Exception("参数为空");
				if (string.IsNullOrEmpty(bpObj.Data.Url))
					throw new Exception("参数Url为空");

                User user = User.Finder.FindByID(Context.LoginUserID);
                if (user == null) throw new Exception("查找User失败");

                /**
                 * D:\yonyou\UBFCE\U9.VOB.Product.UBF\UBFStudio\Runtime\UBF.System.dll
                 * UFSoft.UBF.Util.Context.PDContext.Current
                 * EnterpriseID 登录企业编码
                 * Culture 登录语言
                 * LoginDate 登录日期
                 * OrgCode 登录组织编码
                 * OrgID 登录组织ID
                 * OrgName 登录组织名称
                 * UserCode 登录用户编码
                 * UserID 登录用户ID
                 * UserName 登录用户名称
                 * 
                 * D:\yonyou\U9CE\Portal\ApplicationServer\Libs\UFIDA.U9.Base.BaseBE.dll
                 * UFIDA.U9.Base.Context
                 * 有 登录用户/登录语言/登录组织/登录日期
                 * 但是没有 登录企业
                 */

                //拼接地址
                string LoginUrl = bpObj.Data.Url+ 
                    $"/sign/U9Entrance.aspx?u={user.Code}&p={user.Password}&ep={PlatformContext.Current.EnterpriseID}&org={Context.LoginOrg.ID}&e=m";
				//返回数据
				Dictionary<String, Object> retdict = new Dictionary<String, Object>();
                retdict.Add("LoginUrl", LoginUrl);
                return ResultUtils.success(bpObj, bpObj.Data, retdict);
            }
            catch (Exception ex)
            {
                return ResultUtils.error(bpObj, bpObj.Data, ex);
            }
        }		
	}

	#endregion
	
	
}